springboot及bean 初始化运行

spring boot 启动时运行

Spring Boot应用程序在启动后,会遍历CommandLineRunner接口的实例并运行它们的run方法。也可以利用@Order注解(或者实现Order接口)来规定所有CommandLineRunner实例的运行顺序。

1
2
3
4
5
6
7
8
9
10
11
12
13
@Order(10)
@Component
public class ContractUsegeStatusInitRunner implements CommandLineRunner {
private static Logger logger= LoggerFactory.getLogger(ContractUsegeStatusInitRunner.class);
@Autowired
private ScheduleService scheduleService;

@Override
public void run(String... strings) throws Exception {
logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>启动时合同使用状态更新");
scheduleService.updateContractUsegeStatus();
logger.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>合同使用状态更新结束");
}

Bean 初始化完成时运行

执行顺序 Constructor > @PostConstruct > InitializingBean > init-method

<beanclass=”InitSequenceBean”init-method=”initMethod”>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

public class InitSequenceBean implements InitializingBean {

public InitSequenceBean() {
System.out.println("InitSequenceBean: constructor");
}

@PostConstruct
public void postConstruct() {
System.out.println("InitSequenceBean: postConstruct");
}

public void initMethod() {
System.out.println("InitSequenceBean: init-method");
}

@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitSequenceBean: afterPropertiesSet");
}
}

Bean销毁之前执行

使用@PreDestroy